import numpy as np

arr = np.arange(0, 11)
print(arr[8])

s1 = slice(2, 7)
print(s1, type(s1))
s2 = slice(2, 7, 2)
print(arr[s1], arr[s2])

print(arr[2:7], arr[2:7:2], '\n')

arr2 = np.arange(15)
arr2.shape = (5, 3)
print(arr2, '\n')
# 打印数组arr2的倒数第二个维度的所有元素
print(arr2[..., 1], '\n')
# 打印数组arr2的第一行（索引为0的行）的所有元素。
print(arr2[0, ...], '\n')

# 从arr3中拿出1，5，7三个元素
arr3 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(arr3[[0, 1, 2], [0, 1, 0]], '\n')

arr4 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]])
print(arr4, '\n')
rows = np.array([[0, 0], [3, 3]])
cols = np.array([[0, 2], [0, 2]])
# 取出位置为(0,0) (0,2) (3,0) (3,2)的元素
print(arr4[rows, cols], '\n')
# 取出位置为(0,0) (3,2)的元素
print(arr4[[0, 3], [0, 2]], '\n')
# 取出第二行到第三行，第二列到第三列的所有元素
print(arr4[1:3, 1:3], '\n')
print(arr4[1:3, [1, 2]], '\n')
# 取出所有行，从第二列到最后一列的所有元素
print(arr4[..., 1:], '\n')
# 返回arr4中大于7的元素
print(arr4[arr4 > 7], '\n')

arr5 = np.array([np.nan, 1, 2, np.nan, 4, 5, 6])
print(arr5[np.isnan(arr5)])
# 取反操作
print(arr5[~np.isnan(arr5)])
